package com.sgb.kjwl.di.pick;

import com.sgb.kjwl.repository.PickProjectRepertory;
import com.sgb.kjwl.repository.impl.PickProjectRepertoryImpl;
import com.sgb.kjwl.view.ui.activity.pick.PickBiddingListActivity;
import com.sgb.kjwl.view.ui.activity.pick.PickCompanyDetailActivity;
import com.sgb.kjwl.view.ui.activity.pick.PickCompanyListActivity;
import com.sgb.kjwl.view.ui.activity.pick.PickInquireByLetterActivity;
import com.sgb.kjwl.view.ui.activity.pick.PickProjectActivity;
import com.sgb.kjwl.view.ui.activity.pick.PickSigningUpListActivity;
import com.sgb.kjwl.view.ui.activity.pick.ReportActivity;
import com.sgb.kjwl.view.ui.fragment.pick.PickAttentionBiddingListFragment;
import com.sgb.kjwl.view.ui.fragment.pick.PickAttentionInfoFragment;
import com.sgb.kjwl.view.ui.fragment.pick.PickAttentionNoticingBidFragment;
import com.sgb.kjwl.view.ui.fragment.pick.PickAttentionSigningUpListFragment;
import com.sgb.kjwl.view.ui.fragment.pick.PickBidListFragment;
import com.sgb.kjwl.view.ui.fragment.pick.PickCompanyDetailFragment;
import com.sgb.kjwl.view.ui.fragment.pick.PickPickingListFragment;
import com.sgb.kjwl.view.ui.fragment.pick.PickProjectListFragment;
import com.sgb.kjwl.viewmodel.pick.PickAttentionBiddingListModel;
import com.sgb.kjwl.viewmodel.pick.PickAttentionInfoModel;
import com.sgb.kjwl.viewmodel.pick.PickAttentionNoticingBidModel;
import com.sgb.kjwl.viewmodel.pick.PickAttentionSigningUpListModel;
import com.sgb.kjwl.viewmodel.pick.PickBidListFragModel;
import com.sgb.kjwl.viewmodel.pick.PickBiddingListModel;
import com.sgb.kjwl.viewmodel.pick.PickCompanyDetailFragmentModel;
import com.sgb.kjwl.viewmodel.pick.PickCompanyDetailModel;
import com.sgb.kjwl.viewmodel.pick.PickCompanyListModel;
import com.sgb.kjwl.viewmodel.pick.PickInquireByLetterModel;
import com.sgb.kjwl.viewmodel.pick.PickPickingListFragModel;
import com.sgb.kjwl.viewmodel.pick.PickProjectListFragModel;
import com.sgb.kjwl.viewmodel.pick.PickProjectModel;
import com.sgb.kjwl.viewmodel.pick.PickSigningUpListModel;
import com.sgb.kjwl.viewmodel.pick.ReportModel;
import com.swgk.core.base.di.Activity;
import com.swgk.core.base.di.Fragment;
import com.swgk.core.base.api.BaseApiSource;
import com.swgk.core.base.model.preference.BasePreferenceSource;

import dagger.Module;
import dagger.Provides;

@Module
public class PickProjectModule {
    private PickProjectActivity pickProjectActivity;
    private PickCompanyListActivity pickCompanyListActivity;
    private PickCompanyDetailActivity pickCompanyDetailActivity;
    private PickProjectListFragment pickProjectListFragment;
    private PickPickingListFragment pickPickingListFragment;
    private PickSigningUpListActivity pickSigningUpListActivity;
    private PickBiddingListActivity pickBiddingListActivity;
    private PickBidListFragment pickBidListFragment;
    private PickInquireByLetterActivity pickInquireByLetterActivity;
    private ReportActivity reportActivity;
    private PickCompanyDetailFragment pickCompanyDetailFragment;
    private PickAttentionSigningUpListFragment pickAttentionSigningUpListFragment;
    private PickAttentionBiddingListFragment pickAttentionBiddingListFragment;
    private PickAttentionNoticingBidFragment pickAttentionNoticingBidFragment;
    private PickAttentionInfoFragment pickAttentionInfoFragment;

    public PickProjectModule(PickProjectActivity pickProjectActivity) {
        this.pickProjectActivity = pickProjectActivity;
    }

    public PickProjectModule(PickCompanyListActivity pickCompanyListActivity) {
        this.pickCompanyListActivity = pickCompanyListActivity;
    }

    public PickProjectModule(PickProjectListFragment pickProjectListFragment) {
        this.pickProjectListFragment = pickProjectListFragment;
    }

    public PickProjectModule(PickPickingListFragment pickPickingListFragment) {
        this.pickPickingListFragment = pickPickingListFragment;
    }

    public PickProjectModule(PickCompanyDetailActivity pickCompanyDetailActivity) {
        this.pickCompanyDetailActivity = pickCompanyDetailActivity;
    }

    public PickProjectModule(PickSigningUpListActivity pickSigningUpListActivity) {
        this.pickSigningUpListActivity = pickSigningUpListActivity;
    }

    public PickProjectModule(PickBiddingListActivity pickBiddingListActivity) {
        this.pickBiddingListActivity = pickBiddingListActivity;
    }

    public PickProjectModule(PickBidListFragment pickBidListFragment) {
        this.pickBidListFragment = pickBidListFragment;
    }

    public PickProjectModule(PickInquireByLetterActivity pickInquireByLetterActivity) {
        this.pickInquireByLetterActivity = pickInquireByLetterActivity;
    }

    public PickProjectModule(ReportActivity reportActivity) {
        this.reportActivity = reportActivity;
    }

    public PickProjectModule(PickCompanyDetailFragment pickCompanyDetailFragment) {
        this.pickCompanyDetailFragment = pickCompanyDetailFragment;
    }

    public PickProjectModule(PickAttentionSigningUpListFragment pickAttentionSigningUpListFragment) {
        this.pickAttentionSigningUpListFragment = pickAttentionSigningUpListFragment;
    }

    public PickProjectModule(PickAttentionBiddingListFragment pickAttentionBiddingListFragment) {
        this.pickAttentionBiddingListFragment = pickAttentionBiddingListFragment;
    }

    public PickProjectModule(PickAttentionNoticingBidFragment pickAttentionNoticingBidFragment) {
        this.pickAttentionNoticingBidFragment = pickAttentionNoticingBidFragment;
    }

    public PickProjectModule(PickAttentionInfoFragment pickAttentionInfoFragment) {
        this.pickAttentionInfoFragment = pickAttentionInfoFragment;
    }

    @Provides
    @Activity
    ReportModel provideReportModel() {
        return new ReportModel(reportActivity);
    }

    @Provides
    @Activity
    PickProjectRepertory pickProjectRepertory(BaseApiSource apiSource, BasePreferenceSource preferenceSource) {
        return new PickProjectRepertoryImpl(apiSource, preferenceSource);
    }

    @Provides
    @Activity
    PickProjectModel pickProjectModel(PickProjectRepertory repertory) {
        return new PickProjectModel(pickProjectActivity, repertory);
    }

    @Provides
    @Activity
    PickCompanyListModel pickCompanyListModel(PickProjectRepertory repertory) {
        return new PickCompanyListModel(pickCompanyListActivity, repertory);
    }

    @Provides
    @Fragment
    PickBidListFragModel pickBidListFragModel(PickProjectRepertory repertory) {
        return new PickBidListFragModel(pickBidListFragment, repertory);
    }

    @Provides
    @Fragment
    PickProjectListFragModel pickProjectListFragModel(PickProjectRepertory repertory) {
        return new PickProjectListFragModel(pickProjectListFragment, repertory);
    }

    @Provides
    @Fragment
    PickPickingListFragModel pickPickingListFragModel(PickProjectRepertory repertory) {
        return new PickPickingListFragModel(pickPickingListFragment, repertory);
    }

    @Provides
    @Activity
    PickCompanyDetailModel pickCompanyDetailModel(PickProjectRepertory repertory) {
        return new PickCompanyDetailModel(pickCompanyDetailActivity, repertory);
    }

    @Provides
    @Activity
    PickSigningUpListModel pickSigningUpListModel(PickProjectRepertory repertory) {
        return new PickSigningUpListModel(pickSigningUpListActivity, repertory);
    }

    @Provides
    @Activity
    PickBiddingListModel pickBiddingListModel(PickProjectRepertory repertory) {
        return new PickBiddingListModel(pickBiddingListActivity, repertory);
    }

    @Provides
    @Activity
    PickInquireByLetterModel pickInquireByLetterModel(PickProjectRepertory repertory) {
        return new PickInquireByLetterModel(pickInquireByLetterActivity, repertory);
    }

    @Provides
    @Activity
    PickCompanyDetailFragmentModel pickCompanyDetailFragmentModel(PickProjectRepertory repertory) {
        return new PickCompanyDetailFragmentModel(pickCompanyDetailFragment, repertory);
    }

    @Provides
    @Activity
    PickAttentionSigningUpListModel pickAttentionSigningUpListModel(PickProjectRepertory repertory) {
        return new PickAttentionSigningUpListModel(pickAttentionSigningUpListFragment, repertory);
    }

    @Provides
    @Activity
    PickAttentionBiddingListModel pickAttentionBiddingListModel(PickProjectRepertory repertory) {
        return new PickAttentionBiddingListModel(pickAttentionBiddingListFragment, repertory);
    }

    @Provides
    @Activity
    PickAttentionNoticingBidModel pickAttentionNoticingBidModel(PickProjectRepertory repertory) {
        return new PickAttentionNoticingBidModel(pickAttentionNoticingBidFragment, repertory);
    }

    @Provides
    @Activity
    PickAttentionInfoModel pickAttentionInfoModel(PickProjectRepertory repertory) {
        return new PickAttentionInfoModel(pickAttentionInfoFragment, repertory);
    }
}
